<?php echo $this->render('javascript/jquery.cookie.phtml'); ?>

<script type='text/javascript' template='<?php echo basename(__FILE__); ?>'>

$(function() {
	$("form").submit(function() {
		$("#submit").attr("disabled", "disabled");

		$("input").keydown(function(event) {
			if(event.keyCode==13) {
				return false;
			}
		});
	});
});


/**
 * Request object. Works with document.location.
 * Can build valid urls with changed params in Zend Framework context.
 */
function Request($module, $controller, $action, $href) 
{
	var $_url = $href;
	var $_module = $module;
	var $_controller = $controller;
	var $_action = $action;
	var $_params = []
	var $self = this;
	
	/**
	 * Constructor. Parse current url and set object property.
	 *
	 * @return void
	 */
	this.init = function()
	{
		if (!$_url) {
			$_url = document.location.pathname.toString() + document.location.search.toString();
		}
		
		var $url = $_url.split('?')[0];
		$url = trim($url, '/');
		
		var $parts = $url.split('/');
		var $params = []

		// Fill params array with Zend params
		$($parts).each(function($key, $value) {
			if (($value == $_module) || ($value == $_controller) || ($value == $_action)) {
				return;
			}

			$params.push($value);
		});

		var $paramKey;
		for ($i = 0; $i < $params.length; $i++) {
			$value = $params[$i];
			
			if (($i % 2) == 0) {
				$paramKey = $value;
			} else {
				$_params[$paramKey] = $value;
			}
		}

		// Fill params array with params from query string
		var $query = $_url.split('?')[1];
		if (!$query) return;
		$query = trim($query, '?');
		$query = trim($query, '&');
		if (!$query) return;
		
		$parts = $query.split('&');
		for ($key in $parts) {
			var $part = $parts[$key].split('=');
			$_params[ $part[0] ] = $part[1];
		}
	}

	/**
	 * Set array of params for use in generated urls.
	 *
	 * @return array
	 */
	this.setParams = function($params)
	{
		for ($key in $params) {
			$self.setParam($key, $params[$key]);
		}

		return $self.getParams();
	}

	/**
	 * Return array of all used params.
	 *
	 * @return array
	 */
	this.getParams = function()
	{
		return $_params;
	}

	/**
	 * Return current URL, can be already changed with setParam values.
	 *
	 * @return string
	 */
	this.getUrl = function()
	{
		var $url;
		var $query = [];
		
		$url = '/'+$_module+'/'+$_controller+'/'+$_action;

		for ($key in $_params) {
			if ($_params[$key] != '') {
				$query.push($key+'='+$_params[$key]); 
			}
		}

		$query = $query.join('&');
		if ($query) {
			$url += '?' + $query;
			$url = trim($url, '?');
		}
		
		return $url;
	}

	/**
	 * Get param from request. Also can return module, controller and action name.
	 *
	 * @param string $name
	 * @return string
	 */
	this.getParam = function($name)
	{
		var $param = $_params[$name];
		return $_params[$name];
	}

	/**
	 * Get param from request. Also can return module, controller and action name.
	 *
	 * @param string $name
	 * @return string
	 */
	this.getCookieWrapParam = function($name)
	{
		var $param = $_params[$name];
		if (!$param) {
			var $cookie = $.cookie($name);
			if ($cookie) {
				var $regexp = new RegExp($_params["table"]+':([^,]+)');
				var $match = $cookie.match($regexp);
				if ($match && $match[1]) {
					$_params[$name] = $match[1];
					$param = $match[1];
				}
			}
		}
		
		return $_params[$name];
	}

	/**
	 * Set param in request. Create new or replace existing.
	 *
	 * @param string $name
	 * @param string $value
	 * @return void
	 */
	this.setParam = function($name, $value) 
	{
		$_params[$name] = $value;
	}

	/**
	 * Set the action name for generate next urls.
	 * 
	 * @param string $value
	 * @return void
	 */
	this.setAction = function($value)
	{
		$_action = $value;
	}

	this.init();
}

function trim( str, charlist ) {	
	// Strip whitespace (or other characters) from the beginning and end of a string
	// 
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: mdsjack (http://www.mdsjack.bo.it)
	// +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
	// +	  input by: Erkekjetter
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

	charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
	var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
	return str.replace(re, '');
}

function setCookie (name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
}

function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

function Set_Cookie( name, value, expires, path, domain, secure )
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

//this fixes an issue with the old method, ambiguous values
//with this test document.cookie.indexOf( name + "=" );
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}
	




function blinkField(fld) {
    fld = $(fld);
    if (fld.data('blink_timer'))
        clearInterval(fld.data('blink_timer'));
 
    var blink_count = 6;
 
    fld.data('blink_timer', setInterval(function() {
        fld.toggleClass('field_warning');
        if (blink_count-- < 0) {
            fld.removeClass('field_warning');
            clearInterval(fld.data('blink_timer'));
        }
    }, 100));
}

function strtolower (str) {
    // Makes a string lowercase  
    // 
    // version: 1101.3117
    // discuss at: http://phpjs.org/functions/strtolower
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Onno Marsman
    // *     example 1: strtolower('Kevin van Zonneveld');
    // *     returns 1: 'kevin van zonneveld'
    return (str+'').toLowerCase();
}

</script>
<style type="text/css" template='<?php echo basename(__FILE__); ?>'>
.field_warning {
	border: 1px red solid;
}
</style>
